package com.lgj.tlias.domain.pojo;

import lombok.Data;

/**
 * 后端统一返回结果
 */
//@Data
//@NoArgsConstructor
//@AllArgsConstructor
//public class Result {
//    private Integer code;//响应码，1 代表成功; 0 代表失败
//    private String msg;  //响应信息 描述字符串
//    private Object data; //返回的数据
//
//    //增删改 成功响应
//    public static Result success(){
//        return new Result(1,"success",null);
//    }
//    //查询 成功响应
//    public static Result success(Object data){
//        return new Result(1,"success",data);
//    }
//    //失败响应
//    public static Result error(String msg){
//        return new Result(0,msg,null);
//    }
//}
@Data
public class Result<T> {
    private Integer code;    //状态码
    private String msg;     //状态说明
    T data;                 //返回数据，泛型
    //@Data 默认不生成构造器
    //注意:无参
    public Result(){};
    //有参：返回数据
    public Result(T data){
        this.data=data;
    }
    //执行成功(不带数据)
    public static Result success(){
        Result result = new Result<>();
        result.setCode(200);
        result.setMsg("success");
        return result;
    }
    //这里-特殊定制
    public static<T> Result<T> success(Integer code,T data){
        Result<T> result = new Result<>(data);
        result.setCode(code);
        result.setMsg("success");
        return result;
    }
    //成功携带数据
    //注意:如果使用static 记得也加<T> ,不然就报错哦！
    public static<T> Result<T> success(T data){
        Result<T> result = new Result<>(data);
        result.setCode(200);
        result.setMsg("success");
        return result;
    }

    //失败（状态码很多）不带数据
    public static Result error(Integer code,String msg){
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
    //失败（携带数据）
    public static<T> Result<T> error(Integer code,String msg,T data){
        Result<T> result = new Result<>(data);
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
}
